home *** CD-ROM | disk | FTP | other *** search
/ Commodore 64 Scene Diskmags Assortment / Commodore_CEE_Vol._1_Issue_05_1995_Jack_Vander_White_Disk_3_of_3_Side_B.d64 / 128 bit 1 next >
Text File  |  2023-02-26  |  17KB  |  268 lines

  1. Subj : Mapping 128 errors From : David Schmoll
  2.  
  3. The following is a complete list of known errors in the first edition of COMPUTE!'s Mapping the Commodore 128:
  4.  
  5. p. 53    The last sentence in the discussion of location 153/$99
  6.          should say that CLRCH resets this location to 0/$00, not
  7.          3/$03.
  8.  
  9. p. 54    The last sentence in the discussion of location 154/$9
  10.          should say that CLRCH resets this location to 3/$03, not
  11.          0/$00.
  12.  
  13. p. 98    In the example program, the instruction at address 0D2E
  14.          should be LDX #$04 rather than LDA #$04.
  15.  
  16. p. 199   The comment following the instruction at address 1681 should
  17.          state that the execution routine is at $1688, not $1866.
  18.  
  19. p. 207   The table of statement dispatch addresses begins at
  20.          18318/$478E rather than 18172/$46FC. The table of function
  21.          dispatch addresses begins at 18392/$47D8 rather than
  22.          18317/$478D.
  23.  
  24. p. 290   The third vertical column in this figure should be labeled K0
  25.          rather than K6. The key in the top row of that column (row
  26.          R7) should be 1 rather than 4. The number keys in columns K0-
  27.          K2 are the ones on the numeric keypad.
  28.  
  29.          At the top of the table, the Decimal address of CIA #1 Port A
  30.          should be 56320, not 56322 as shown.
  31.          (This added by SYSOP BK, Q-LINK)
  32.  
  33. p. 424   The last sentence in the second paragraph of the entry for
  34.          location 65280/$FF00 should read: To set up this arrangement,
  35.          use LDA #$0E:STA $FF00. The text instead has LDA #$0F.
  36.  
  37. p. 457   The explanation of how to perform a VDC copy operation is an
  38.          accidental duplication of the procedure for performing a
  39.          fill.
  40.  
  41.          The proper steps for a copy are as follows:
  42.          1. Set bit 7 of register 24/$18 to %1 to indicate a copy
  43.             operation.
  44.          2. Load registers 32-33/$20-$21 with the starting address of
  45.             the area from which the data is to be copied (the source
  46.             area).
  47.          3. Load registers 18-19/$12-$13 with the starting address of
  48.             the area to which the data is to be copied (the
  49.             destination area).
  50.          4. Store the number of bytes to be copied in register 30/$1E.
  51.             This will initiate the block copy operation.
  52.             should be 2580 rather than 2780.
  53.  
  54. p. 501   The numbers in the expansion bank register setting table are
  55.          misaligned. All the numbers in the Expansion Bank column
  56.          should be shifted down one row.
  57.  
  58. p. 507   In the example machine language program, the instruction at
  59.          address 1424 should be INC $FE rather than INC $FD.
  60.  
  61. p. 645-  All those entries in this appendix with the form note/not are
  62.     647  missing sharp and flat symbols. For example, the second note
  63.          (with a frequency of 34.65 Hz) should be designated C sharp/D
  64.          flat. The fourth note should be D sharp/E flat, and so forth.
  65.  
  66. p. 655   The decimal value of the 128's RS-232 status register
  67.          (corresponding to location 663/$0297 on the Commodore 64)
  68.          should be 2580 rather than 2780.
  69.  
  70. p. 689   The hexadecimal value of the entry address for the Kernal
  71.          BASIN routine should be $FFCF, not $FFCE.
  72.  
  73. ---------------------------- 
  74. An idea
  75.  
  76. From : Phil Heberer
  77.  
  78. I've been tossing around an idea for several years, but *my* programming skills are awfully rusty and may not be up to the task. What I want to do is adapt a C128 for use by handicapped kids as a communication device - probably written, unless SAM speech synthesis could be incorporated. Here in San Antonio, we have a non-profit group called CAMP (Children's Association for Maximum Potential) that offers support for familes with children that have Cerebral Palsy (*VERY* limited motor skills!)
  79.  
  80. What I envision is a simple text editor with some sort of scanning across the alphabet that could be controlled with a joystick port input. Simple common phrases could be used like choosing taglines in an OLR. I would prefer to do this on a 128 80 col screen where the screen could be split to  display the alphabet at the top, with data entry on the lower half. Once the text is composed, there needs to be command to send the output to a printer.
  81.  
  82. Since movement is very difficult for these kids, input needs to be kept extremely simple. What I envision could use no more keys than the sort of external numeric keypad we used to use on the C64.
  83.  
  84. Anyone want to toss around this idea and see what we could come up with? I have some spare equipment I could donate, and I KNOW it would be appreciated! BTW, nearly all of these kids are also Air Force military dependents that will also be my patients (I'm going to work in the Orthotic Lab at Wilford Hall USAF Medical Center on Monday). I design and build back braces, leg braces, etc. and will be teaching for the Air Force Tech Training school for anyone who might be interested. ALL input/ideas welcome!
  85.  
  86. --------------------------- 
  87. Ipaint
  88.  
  89. From : RAYMOND CRUZ
  90.  
  91.         After seeing numerous questions regarding .Gif viewing on the C128's, I decided to post the below information for everyone, since quite a few appear to need it.
  92.  
  93. I Paint: -------
  94.  
  95. A drawing/painting program that allows over 65,536 colors and a 640x400 display.  It uses interlace & needs a C128 with 64k video ram & 80 col. monitor,it also supports over 50 printers including, color,laser,bubble jet, thermal, and dot matrix.  It has support for the mouse as well. It is as powerful as many of the Amiga/IBM programs I have seen.
  96.  
  97. I Port:
  98.  
  99. This is an I Paint Graphics Manager to allow you to import other graphic formats into I Paint.  It offers 8 import options: Amiga IFF, HAM, and EHB Koala GIF MAC GeoPaint Basic 8 Doodle Printshop
  100.  
  101. Plus allows export options of I Paint files to Gif files.
  102.  
  103. I have converted 640x400x256 gifs successfully with no loss of colors, where GDS would crap out.  One of my Conversions has been distributed by Rick Kane (author) its called ip.bodyglove.  Its available on GENIE. My name there is Anthony Cruz.
  104.  
  105. I Paint 1.5 is $39.95 I Port 1.54 is $29.95 Save! Both is  $59.95 I Port update  $10.00 with original I Port disk.
  106.  
  107. These programs are available from:
  108.  
  109. Living Proof, Ltd Dept. C1 PO Box 80714 Minneapolis, MN  55408-8714
  110.  
  111. The heart and soul of I Port is its powerful Equalizer.  This equalizer allows you to have full control over the colors during the conversion, meaning that those certain GIFs that come out horrible on other converters will now be able to be "Color Corrected" with I Port. 
  112.  The equalizer takes some time to learn, but when you do learn how to use it, you acquire a very useful tool.  I used the equalizer to do that ip.bodyglove picture that you see on Genie. It was originally a 640x480 GIF with 256 colors :)
  113.  
  114. Another advantage is some GIFs are interlaced and Rick Kane (I Paint author) has created a program called de-lacer that will convert that GIF from an interlaced GIF to a regular GIF.  This opens a lot of doors for you :>
  115.  
  116. If you decide to get the program contact Rick Kane and when you order it from him ask him if he can include the De-lacer to save you a long distance call to 221 baker st.  I have over 1000 GIFs on my hard drive that I have sucessfully converted to I Paint using I Port, its a great program.  If you get it and need any help, just hollar.  I beta tested a lot of the I Paint/I Port stuff for Rick, so I know I Paint and I Port inside out by now :)
  117.  
  118. ------------------------- 
  119. Re: .MOD files
  120.  
  121. From:(Nate Dannenberg) Date: 6 Dec 1995 05:52:41 GMT
  122.  
  123. Just letting you all know that I have a modplayer I wrote for the  C128+REU+Stereo SIDs.  This program will be available thru Threshold  Productions in about a month, for about $30.
  124.  
  125. Included in the package will be drivers and modes for mono or stereo  SIDs, in 4 or 8 bit resolution, plus drivers for Shaun Halstead's  Surround-SID board, and my 4-track digiboard (available soon thru TP).
  126.  
  127. Watch this space for details, and be sure to Email me if you have any  questions regarding this software.  
  128.  
  129. Sometime there will be a C64 version available, and if time, money, and  luck permit, there will be a Super64 version written to take advantage of  what this 10/20 MHz card has to offer (such as 8 to 32 track playback,  sample rates in excess of 44KHz, etc.)
  130.  
  131. Also, there my be a version available in the future, for expanded C64's  and 128's that have the internal 1MB of ram installed (right now, the  program needs an REU to run...just not enough memory in  the C64 to hold  the average 200K to 400K file)
  132.  
  133. ------------------------------ 
  134. Ace15
  135.  
  136. From : Ismael Cordeiro
  137.  
  138. Geoff Sullivan writes:
  139.  
  140.  GS> However I cannot get MY geocable setup to work. I've read
  141.  GS> and re-read the docs on how to set the paramaters in the
  142.  GS> config file to utilize the geocable, but I must be missing
  143.  GS> something because I can't get it to work in ZED. It works
  144.  GS> fine in Geos though. Have you tried it?
  145.  
  146. ACE15 works fine with Geocable out-of-the-box. No need to change  anything. What happens is that the present version of ZED doesn't have all features implemented and the print one is among them. In the docs  for ZED there is a list of commands. The ones available in the present version have an asterisk preceeding them.
  147.  
  148. For printing with the Geocable you have to copy or redirect the file to  drive u, the user port, and you have to pay attention to two things.   First, since there is no interface for translating PETSCII to ASCII you  have to send ASCII to the printer. Second, most printers default to not  adding a LF to CRs, so you have to send to the printer ASCII-CL (MS-DOS  and CP/M) or ASCII-LF (Unix). Other possibilities are setting your  printer to add LF but that will reflect in the settings of all your  other programs, or turning on the LF switch in the Geocable, if it has  one.
  149.  
  150. The command for printing ASCII-CL and ASCII-LF files is:
  151.  
  152. cp filename u:
  153.  
  154. or
  155.  
  156. cat filename >u:
  157.  
  158.  The command for printing ASCII-CR files is:
  159.  
  160. tr -ac2u filename >u:
  161.  
  162. Other options that give the same results are -ac2a, -ac2al and -ac2m.
  163.  
  164.  
  165. The command for printing PETSCII files is:
  166.  
  167. tr -p2u filename >u:
  168.  
  169. Other options that give the same results are -p2a, -p2al, -p2m, -c2a,  -c2al, -c2u and -c2m.
  170.  
  171. ------------------------------ 
  172. Programmin'
  173.  
  174. From : Rod Gasson
  175.  
  176. Myke Carter writes:
  177.  
  178.  MC> I would like to make an 80-column C128 version of a C64 program that I'm currently working on but do not have the equivalent manuals necessary in order to learn the correct POKE locations for some of the core functions of my C64 program.  I recently learned that to do the standard C64
  179.  
  180. Hmm, one of the first things you'll need is a cross reference guide. Jack VanderWhite can supply such a list. Contact him for details.
  181.  
  182.  MC> my C64 program.  I recently learned that to do the standard C64 screen/border colour changing POKEs (at 53280 and 53281) on the C128, I must first select BANK 15. 
  183.  
  184. Bank15 happens to be the C128's default bank. You rarely need to issue this command (at least not from BASIC)
  185.  
  186. All VIC and SID registers are the same for both the C64 and the C128, however, the 80 column screen doesn't use VIC so for your purposes forget that it exists.
  187.  
  188.  MC> I dug out my C128 Programmer's Reference Guide and read as much as I could about the C128's bank structures, but it seems to assume a general understanding about what the banks are all about in the first place.
  189.  
  190. Actually, you'll find that none of the reference guides or memory maps are much better.  They are confusing.
  191.  
  192.  MC> I really doubt that this BANK thing is going to be really difficult for me to understand if I can get off to a good
  193.  MC> start using them.
  194.  
  195. I'll help as much as I can..  and no, they are not difficult to understand..  in fact, if you are using BASIC you can forget they exist.
  196.  
  197.  MC> What is the purpose for having 2 64K banks that are split into 8 16K video banks and whatnot
  198.  
  199. This is all related to ADDRESSING, so I'll start here.
  200.  
  201. The C64:
  202.  
  203. The 6502 CPU is capable of addressing 64k of memory ..  from $0000 through to $ffff.
  204.  
  205. The VIC chip is "mapped" into the i/o block at $d000 .. for technical reasons it can only "see" 16k of memory at a time. Most C64 programmers are aware of this, so I'll not explain why. The 16k "block" of memory that VIC sees is called a "bank" (or video bank). There are 4 such "banks" that can be used since there is only 64k of memory available (however, not all of these banks are usable, for other reasons)  The C128:  The VIC is the same as the C64, so it too can only address 16k, and again, each 16k "block" that it can address is called a "bank". Since we now have 128k of memory you have up to 8 "banks" to choose from.
  206.  
  207. The C128 uses the same CPU as the C64 (well, almost the same), and as such it too can only ADDRESS memory in the range $0000-$FFFF .. ie. 64k.   Since the computer is advertised as having 128k of memory the designers got smart and added what they call a MMU chip (Memory managment Unit)..  This chip enables blocks of RAM to be switched in and out....  there are two such blocks in the C128, and just to confuse things, CBM also called these blocks "banks", namely BANK#0 and BANK#1. Each bank consists of 64k of RAM and the CPU can address one OR the other of these banks, but not both at the same time, as it can still only address from $0000-$FFFF.
  208.  
  209. Now the fun part ;-) First up *forget about the video "banks"*  I am only considering the "banks" that relate to the CPU.
  210.  
  211. RAM is no good without an operating system, and just like the C64, this operating system (the KERNAL) is in ROM..  the poor ol' CPU can still only address 64k, so this ROM must be mapped in or out as required (just like the C64). With the C128, with the O/S switched in in place of RAM (its usual startup configuration) the designers called it BANK#15.   IOW, bank#0 will have the CPU looking in one entire chunk of 64K RAM, bank#1 will have it looking in another chunk of 64k RAM, and bank#15 has it looking in most of bank#0 ram PLUS the ROMS. Again, this is very similar to the C64, except that we have now given it a bank number. On the C64 we consider this the "normal" state of affairs and treat "the underlying RAM" as something mysterious.. essentially its the same thing.
  212.  
  213. Now that we have banks#0, 1, and 15 sorted out it is only fair to mention that there are other "banks" ..  we still only have the two blocks of 64k RAM and the ROM to deal with, but these other banks allow different combinations of each..  for example, bank#1 RAM PLUS the ROM, is bank#14.
  214.  
  215. Hopefully you follow that.
  216.  
  217.  MC> and then how does the 64K video chip play into all of this? 
  218.  
  219. In 80 column mode, the VIC chip isn't used (which is why I said to ignore the "banks" related to this). You can forget everything to do with the VIC chip. In this mode, the video is controlled by the VDC chip, but unlike the VIC chip, the VDC chip has its own RAM.
  220.  
  221.  MC> Does that effectively make a C128 into a C192
  222.  
  223. Yes !   :-)    A C128 with a 64k VDC chip is indeed a 198k computer.
  224.  
  225.  MC> or is it shared in part or whole with the previously established 128K RAM - or what?
  226.  
  227. It is completely isolated...  in fact it is so isolated that it can be a real PITA to deal with. This VDC ram is ONLY addressable via 2 locations, at $D600 and $D601.. you place the value you wish to store into D601 and the register you wish to store it to into $D600.  It is like performing surgery through a keyhole. If you are only using BASIC, then regular PRINTs and other control codes (such as chr$(147) to clear screen) works fine, so you may not need to know any of this.
  228.  
  229.  MC> First and foremost, I need to know where the pointers are for the start of BASIC,
  230.  
  231. 45, 46        (decimal)   (Bank#0)
  232.  
  233.  MC> start of variables,
  234.  
  235. 47,48     *note*  BASIC variables are stored in BANK#1
  236.  
  237.  MC> start of array variables,
  238.  
  239. 49,50
  240.  
  241.  MC> start of free RAM, and
  242.  
  243. 51, 52
  244.  
  245.  MC> end of BASIC are.
  246.  
  247. Sh*t, this one gets me every time...  up around 4000 from memory.
  248.  
  249.  MC> My program changes the values in these locations frequently and simply cannot function without them.  Do I just precede all of these POKEs with a BANK15 statement and pretend that it's still a C64 (I doubt it!) or what?
  250.  
  251. Your biggest problem is gunna be the variables. What you are suggesting won't work because bank#15 is bank#0 RAM plus ROM..  the C128 BASIC variables are stored in BANK#1 ram.. To retrieve data from here you'll need something like this.
  252.  
  253. 10  print "this is an intro  the computer is in bank#15 at startup" 
  254. 20  bank#1     :REM  you wanna get data from bank#1 
  255. 30  a=peek (location) : a$=chr$(a) 
  256. 40  bank#15     :REM  switch the roms back in. 
  257. 50  print a$
  258.  
  259. I'm not gunna guarantee this will work though, cos switch to bank#1 is switching the ROMS out, so the program may crash (I forget what safeguards BASIC has for this). You *should* be safe by using bank#14 in line#20 (which will give you bank#1 RAM and ROM), but you will of course only be able to read locations below the ROM address ($4000) ..    problem here is that variables are stored way up high.
  260.  
  261. Well, I dunno if this is of any help..  and I *Hope* I haven't confused you any more than need be.
  262.  
  263. It's far easier to use than it is to explain.
  264.  
  265. ---------------------------
  266.  
  267.  
  268.